0537. 复数乘法【中等】
1. 📝 题目描述
复数 可以用字符串表示,遵循 "实部+虚部i" 的形式,并满足下述条件:
实部是一个整数,取值范围是[-100, 100]虚部也是一个整数,取值范围是[-100, 100]i^2 == -1
给你两个字符串表示的复数 num1 和 num2,请你遵循复数表示形式,返回表示它们乘积的字符串。
示例 1:
txt
输入:num1 = "1+1i", num2 = "1+1i"
输出:"0+2i"
解释:(1 + i) * (1 + i) = 1 + i2 + 2 * i = 2i,你需要将它转换为 0+2i 的形式。1
2
3
2
3
示例 2:
txt
输入:num1 = "1+-1i", num2 = "1+-1i"
输出:"0+-2i"
解释:(1 - i) * (1 - i) = 1 + i2 - 2 * i = -2i,你需要将它转换为 0+-2i 的形式。1
2
3
2
3
提示:
num1和num2都是有效的复数表示。
2. 🎯 s.1 - 模拟
c
char* complexNumberMultiply(char* num1, char* num2) {
int a, b, c, d;
sscanf(num1, "%d+%di", &a, &b);
sscanf(num2, "%d+%di", &c, &d);
char* res = (char*)malloc(64);
sprintf(res, "%d+%di", a * c - b * d, a * d + b * c);
return res;
}1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
js
/**
* @param {string} num1
* @param {string} num2
* @return {string}
*/
var complexNumberMultiply = function (num1, num2) {
const parse = (s) =>
s.split('+').map((v, i) => (i === 1 ? parseInt(v) : parseInt(v)))
const [a, b] = parse(num1)
const [c, d] = parse(num2)
return `${a * c - b * d}+${a * d + b * c}i`
}1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
py
class Solution:
def complexNumberMultiply(self, num1: str, num2: str) -> str:
a, b = map(int, num1[:-1].split('+'))
c, d = map(int, num2[:-1].split('+'))
return f'{a * c - b * d}+{a * d + b * c}i'1
2
3
4
5
2
3
4
5
- 时间复杂度:
- 空间复杂度:
算法思路:
- 解析两个复数的实部和虚部
- 根据复数乘法公式
计算